#ifndef FOOLISHGO_BOARDSTACK_H
#define FOOLISHGO_BOARDSTACK_H


#include "macro_and_enum.h"
#include "GoBoardWithCommonProcess.h"

#define BOARD_STACK_LENGTH 1000

class CBoardStack
{
public:
	CBoardStack(int lineCount);
	void Init(void);
	~CBoardStack(void);

	int GetElementCount(void) const {return m_ElementCount;}
	void GetTop(CGoBoardWithCommonProcess *pNode) const;
	void Push(const CGoBoardWithCommonProcess &node);
	void Pop(void);
	void Clear(void) {m_ElementCount = 0;}

private:
	DISALLOW_COPY_AND_ASSIGN(CBoardStack);

	CGoBoardWithCommonProcess *m_pNodeArray[BOARD_STACK_LENGTH];
	const int m_LineCount;
	int m_ElementCount;
};


#endif